公司正好有自己的短信接口平台,接下来带大家一起配置nagios调用第三方短信接口。
- 首先我们要写一个调用短信接口的脚本,网上的脚本大都是python写的,我这个是shell写的,比较好理解。
         脚本的日志文件 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
 | LOGFILE="/data1/sms_log/sms_send_.log"   :>>"$LOGFILE"  exec 1>>"$LOGFILE"  exec 2>&1  Uid="test"     Key="123456"   MOBILE_NUMBER=$1  QIANMING="%e3%80%90%e9%a9%ac%e5%8f%af%e6%b3%a2%e7%bd%97%e7%bd%91%e3%80%91"  XXD="/usr/bin/xxd"  CURL="/usr/bin/curl"  TIMEOUT=5  MESSAGE_ENCODE=$(echo $(/usr/local/bin/php -r "echo urlencode(\"$2\");"; ) )   URL="http://192.168.100.100:8888/services/msgsend.asmx/SendMsg?userCode=${$Uid}&userPass=${Key}&DesNo=${MOBILE_NUMBER}&Msg=${MESSAGE_ENCODE}${QIANMING}&Channel=0" set -x  ${CURL} -s --connect-timeout ${TIMEOUT} "${URL}"
 | 
- 测试脚本
| 1
 | bash /root/duanxin.sh "手机号" “内容”
 | 
        如果脚本报错,可以根据报错信息检查脚本,如果脚本没有问题,但是短信发不出去,可以看看sms_send_log里面的报错信息
- nagios 调用脚本,不要忘记脚本要给执行权限,一般脚本放在root目录下,nagios在调用脚本时是不能访问root目录的,所以你还要看你/root目录的权限
| 1 2 3 4 5 6 7 8 9
 | define command {        command_name host-notify-by-sms        command_line /root/duanxin.sh $CONTACTPAGER$ "$HOSTNAME$ $HOSTSTATE$ $SHORTDATETIME$"        } define command {        command_name service-notify-by-sms        command_line /root/duanxin.sh $CONTACTPAGER$ "$SERVICESTATE$ $SERVICEOUTPUT$ $HOSTALIAS$/$SERVICEDESC$ $SHORTDATETIME$"        }
 | 
- 看到这里大家可能对上面脚本的$1和$2概念比较模糊,其实刚开始我也迷糊,nagios怎么知道我要发送的号码呢,后来研究发现,$CONTACTPAGER$这个
 量就是nagios内部联系人的变量,也就是他会调用我们在contacts.cfg里面定义的手机号,而我们脚本里面定义的$1就对应$CONTACTPAGER$,$2就对应”$HOSTNAME$ $HOSTSTATE$ $SHORTDATETIME$”